package com.sany.taskmanager.http;

import com.sany.taskmanager.bean.BaseResponse;
import com.sany.taskmanager.bean.ColorBean;
import com.sany.taskmanager.bean.MaterialBean;
import com.sany.taskmanager.bean.TaskInfoBean;

import java.util.List;

import io.reactivex.rxjava3.core.Single;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

public interface ApiService {


    /**
     * 登录
     */
    @FormUrlEncoded
    @POST("login")
    Single<BaseResponse<String>> login(@Field("userName") String userName, @Field("password") String password, @Field("appId") String appId, @Field("factoryCode") String factoryCode);

    /**
     * 退出登录
     */
    @POST("logout")
    Single<BaseResponse<Boolean>> logout();

    /**
     * 获取大臂颜色列表
     */
    @GET("getColorList")
    Single<BaseResponse<List<ColorBean>>> getColorList();


    /**
     * 获取大臂颜色列表：通过颜色编码过滤
     */
    @GET("getColorListByCode")
    Single<BaseResponse<List<ColorBean>>> getColorListByCode(@Query("colorCode") String colorCode);

    /**
     * 获取三一标配颜色
     */
    @GET("getSanyColorList")
    Single<BaseResponse<List<ColorBean>>> getSanyColorList();

    /**
     * 获取已下发的任务列表
     */
    @GET("task/getSendTaskList")
    Single<BaseResponse<List<TaskInfoBean>>> getSendTaskList(@Query("factoryCode") String factoryCode);

    /**
     * 获取历史人物列表
     */
    @GET("task/getHistoryTaskList")
    Single<BaseResponse<List<TaskInfoBean>>> getHistoryTaskList(@Query("factoryCode") String factoryCode);

    /**
     * 任务下发
     */
    @FormUrlEncoded
    @POST("task/sendTask")
    Single<BaseResponse<Boolean>> sendTask(@Field("factoryCode") String factoryCode, @Field("taskJson") String taskJson);


    /**
     * 任务修改
     */
    @FormUrlEncoded
    @POST("task/modifyTask")
    Single<BaseResponse<Boolean>> modifyTask(@Field("taskId") String taskId, @Field("materialNum") String materialNum, @Field("colorType") int colorType, @Field("boomType") int boomType);


    /**
     * 任务取消
     */
    @FormUrlEncoded
    @POST("task/cancelTask")
    Single<BaseResponse<Boolean>> cancelTask(@Field("taskId") String taskId);

    /**
     * 根据车型号获取物料清单
     */
    @GET("task/getMaterialListByCarModelNum")
    Single<BaseResponse<List<MaterialBean>>> getMaterialListByCarModelNum(@Query("carModelNum") String carModelNum);
}
